import java.util.HashMap;

public class MapTest2 {
    public static void main(String[] args) {
        HashMap map = new HashMap();
        map.put("Java从入门到精通", 109);
        map.put("数据结构与算法", 48);
        map.put("机器学习", 79);
        map.put("C++从入门到精通", 89);

        // 替换时，key不存在，map不会改变
        map.replace("Java项目实战", 78);
        System.out.println(map);

        // 使用原value与传入参数计算出来的结果覆盖原有的value
        map.merge("机器学习", 10, (oldVal, param) -> (Integer) oldVal + (Integer) param);
        System.out.println(map);

        // 当key的对应的值为null或者不存在这个key，使用计算的计算作为新的value
        map.computeIfAbsent("Java", key -> ((String) key).length());
        System.out.println(map);

        // 当key的对应的值存在时(无论值是否为null)，使用计算的结果作为新的value
        map.computeIfPresent("Java", (key, value) -> (Integer) value * (Integer) value);
        System.out.println(map);
    }
}
